﻿Imports GBDZafiro

Public Class FrmUsuario
    Private sender As Object
    Private e As EventArgs
    Private newUsuario As Boolean
    Private rowgvUsuario As DataGridViewRow
    Private rowUsuario, rowUsuario2 As DataRow

    Private Sub FrmUsuario_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        actualizarGrilla()
        cargarPerfil()
        gvUsuarios.Enabled = True
    End Sub

    Sub actualizarGrilla()
        Try
            gvUsuarios.DataSource = Nothing
            gvUsuarios.Rows.Clear()
            Dim dtUsuario As DataTable = GBDZafiro.Usuario.ConsultarAll()
            dtUsuario.Columns.RemoveAt(3)
            dtUsuario.Columns.RemoveAt(3)
            With gvUsuarios
                .AutoGenerateColumns = True
                .DataSource = dtUsuario
                '.Columns.Remove("FECHA_REGISTRO")
                '.Columns.Remove("CLAVE")
                .Columns(0).HeaderText = "Usuario"
                .Columns(1).HeaderText = "Nombre"
                .Columns(2).HeaderText = "Perfil"
            End With

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
       
    End Sub

    Sub cargarPerfil()
        Dim dtPerfil As DataTable = GBDZafiro.Perfil.ConsultarAll()
        Dim ds As New DataSet

        ds.Tables.Add(dtPerfil)

        cbPerfil.DataSource = ds.Tables(0)
        cbPerfil.DisplayMember = "PERFIL"
        cbPerfil.ValueMember = "PERFIL"


    End Sub

    Protected Overrides Sub bnGuardar_Click(sender As System.Object, e As System.EventArgs)
        'MyBase.bnGuardar_Click(sender, e)
        Me.sender = sender
        Me.e = e
        guardarUsuario()
        actualizarGrilla()
        gvUsuarios.Enabled = True
    End Sub

    Private Function cargarUsuario() As Usuario
        Dim usuario As New GBDZafiro.Usuario
        usuario.codUsuario = tbUsuario.Text.ToUpper
        usuario.nomUsuario = tbNombre.Text.ToUpper
        usuario.perfil = cbPerfil.Text
        usuario.clave = tbClave.Text
        Return usuario
    End Function

    Sub guardarUsuario()
        Dim usuario As GBDZafiro.Usuario

        If validarCampos() Then
            If newUsuario Then
                usuario = cargarUsuario()
                GBDZafiro.Usuario.Nuevo(usuario)
                MyBase.bnGuardar_Click(sender, e)
                gvUsuarios.Enabled = True
                MessageBox.Show("Usuario guardado con exito")
            Else
                If Not String.Compare(tbClave.Text, rowUsuario("CLAVE").ToString()) = 0 _
                    Or Not String.Compare(rowUsuario2("NOM_USUARIO").ToString(), tbNombre.Text) = 0 _
                        Or Not String.Compare(cbPerfil.Text, rowUsuario2("PERFIL").ToString()) = 0 Then

                    usuario = cargarUsuario()
                    If Not String.Compare(tbClave.Text, rowUsuario("CLAVE").ToString()) = 0 Then
                        GBDZafiro.Usuario.ActualizarClave(usuario)
                    End If

                    If Not String.Compare(rowUsuario2("NOM_USUARIO").ToString(), tbNombre.Text) = 0 _
                        Or Not String.Compare(cbPerfil.Text, rowUsuario2("PERFIL").ToString()) = 0 Then
                        GBDZafiro.Usuario.Actualizar(cargarUsuario())
                    End If

                    MyBase.bnGuardar_Click(sender, e)
                    gvUsuarios.Enabled = True
                    MessageBox.Show("Usuario actualizado con exito")
                End If

            End If
            MyBase.bnGuardar_Click(sender, e)
        End If
    End Sub

    Private Function validarCampos() As Boolean
        If tbUsuario.TextLength < 1 Or tbNombre.TextLength < 1 _
            Or tbClave.TextLength < 1 Or tbConfirmarClave.TextLength < 1 Then
            MessageBox.Show("Complete todos los campos")
            Return False
        ElseIf Not String.Compare(tbClave.Text, tbConfirmarClave.Text) = 0 Then
            MessageBox.Show("Las contraseñas son diferentes")
            Return False
        Else
            Return True
        End If
    End Function

    Protected Overrides Sub bnNuevo_Click(sender As System.Object, e As System.EventArgs)
        MyBase.bnNuevo_Click(sender, e)
        newUsuario = True
        tbNombre.Focus()
    End Sub

    Private Sub gvUsuarios_RowHeaderMouseClick(sender As System.Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles gvUsuarios.RowHeaderMouseClick
        bnNuevo_Click(sender, e)
        newUsuario = False
        cargarUsuarioRegistrado()
    End Sub

    Sub cargarUsuarioRegistrado()
        rowgvUsuario = New DataGridViewRow()
        rowgvUsuario = gvUsuarios.CurrentRow
        tbUsuario.Text = rowgvUsuario.Cells.Item("COD_USUARIO").Value.ToString()
        tbNombre.Text = rowgvUsuario.Cells.Item("NOM_USUARIO").Value.ToString()
        cbPerfil.Text = rowgvUsuario.Cells.Item("PERFIL").Value.ToString()
        tbUsuario.Enabled = False

        rowUsuario2 = TryCast(rowgvUsuario.DataBoundItem, DataRowView).Row

        Dim dtUsuario As DataTable = GBDZafiro.Usuario.ConsxCodUsuario(tbUsuario.Text)
        rowUsuario = dtUsuario.Rows(0)
        tbClave.Text = rowUsuario("CLAVE").ToString()
        tbConfirmarClave.Text = rowUsuario("CLAVE").ToString()
    End Sub

    Protected Overrides Sub bnEditar_Click(sender As System.Object, e As System.EventArgs)
        MyBase.bnEditar_Click(sender, e)
        tbUsuario.Enabled = False
        newUsuario = False
        rowUsuario2.Item("NOM_USUARIO") = tbNombre.Text
        rowUsuario2.Item("PERFIL") = cbPerfil.Text

    End Sub

    Protected Overrides Sub bnEliminar_Click(sender As System.Object, e As System.EventArgs)
        Dim respuesta As DialogResult = MessageBox.Show("Desea eliminar al usuario: " + tbUsuario.Text, "Pregunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If respuesta = Windows.Forms.DialogResult.Yes Then
            If Not newUsuario Then
                GBDZafiro.Usuario.Eliminar(cargarUsuario())
            End If
            gvUsuarios.Enabled = True
            actualizarGrilla()
            MyBase.bnEliminar_Click(sender, e)
            gvUsuarios.Enabled = True
        End If
    End Sub

    Protected Overrides Sub bnCancelar_Click(sender As System.Object, e As System.EventArgs)
        MyBase.bnCancelar_Click(sender, e)
        gvUsuarios.Enabled = True
    End Sub

End Class
